package dao;

import java.util.ArrayList;
import java.util.List;

import hbt.HbtUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import bean.RodamientoVO;

public class HbtRodamientoDao {

	private static SessionFactory sf = null;
	private static HbtRodamientoDao instancia = null;

	public static HbtRodamientoDao getInstancia() {
		if (instancia == null) {
			sf = HbtUtil.getSessionFactory();
			instancia = new HbtRodamientoDao();
		}
		return instancia;
	}

	public void guardarRodamiento(RodamientoVO r) { //Guarda el rodamiento si no existe.
		if(!existeRodamiento(r)){
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(r);
		session.flush();
		session.getTransaction().commit();
		session.close();
		}
	}

	public RodamientoVO obtenerRodamiento(RodamientoVO r) {
		Session session = sf.openSession();
		Transaction trans = session.beginTransaction();
		RodamientoVO rod = (RodamientoVO) session.get(RodamientoVO.class,
				r.getIdRodamiento()); 
		trans.commit();
		session.close();
		return rod;
	}
	
	public boolean existeRodamiento(RodamientoVO r) {
		if(obtenerRodamiento(r) == null)
			return false;
		else
			return true;
				
	}
	
	
	@SuppressWarnings("unchecked")
	public List<RodamientoVO> obtenerTodos()
	{
		List<RodamientoVO> rodamientos = new ArrayList<RodamientoVO>();
		Session session = null;
		session = sf.openSession();
		session.beginTransaction();
		rodamientos = session.createQuery("from RodamientoVO").list();
		session.getTransaction().commit();
		session.close();
		return rodamientos;
		
	}

	public void actualizarRodamiento(RodamientoVO rodamientoVO) {
		try {

			Session session = sf.openSession();
			session.beginTransaction();
			session.update(rodamientoVO);
			session.getTransaction().commit();
			session.close();

		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		
	}

	
}
